const express = require('express')
const app = express()

/**
 * express 的实例自带了 on 方法 和 emit方法 （express这个优秀的框架就是基于 EventEmitter创建的）
 * 实际上几乎大多数优秀的第三方库或node自带的库都是有基于EventEmitter进行封装（因为真的非常好用）
 *
 * 使用事件可以实现跨模块之间的通信
 *  如这个例子 如果项目比较大 路由处理的部分一般是单独的文件的（方便维护）
 *  express将res上挂在了 app 实例  所以找到app实例去触发事件
 *  这样其他模块中定义的事件就可以被触发
 *  这就完成了跨模块（文件）的通信
 */
app.on('demo', () => {
	console.log('demo事件监听成功')
	for (let i = 0; i < 10000; i++) {
		console.log(i)
	}
})

app.get('/', (req, res) => {
	res.app.emit('demo')
	// for (let i = 0; i < 10000; i++) {
	// 	console.log(i)
	// }
	res.send('hello world')
})

app.listen(666, () => {
	console.log('server is running on port 666!')
})
